﻿using System.Collections.Generic;
using DatabaseManager.Core.Models;

namespace DatabaseManager.Core.Interfaces
{

    /// <summary>
    /// 提供对系统数据库（MySQL）的访问接口，用于存储和管理注册数据库、应用系统等信息。
    /// </summary>
    public interface IDatabaseRepository
    {
        #region 数据库注册管理

        void AddDatabase(RegisteredDatabase database);
        void UpdateDatabase(RegisteredDatabase database);
        void DeleteDatabase(int id);
        List<RegisteredDatabase> GetAllDatabases();
        RegisteredDatabase GetDatabaseById(int id);

        #endregion

        #region 应用系统管理

        void AddApplication(ApplicationSystem application);
        void UpdateApplication(ApplicationSystem application);
        void DeleteApplication(int id);
        List<ApplicationSystem> GetAllApplications();
        ApplicationSystem GetApplicationById(int id);

        #endregion

        #region 多对多关系管理

        void AddApplicationDatabaseMapping(int applicationId, int databaseId);
        void RemoveApplicationDatabaseMapping(int applicationId, int databaseId);
        List<(int ApplicationId, int DatabaseId)> GetAllMappings();
        List<int> GetApplicationIdsByDatabaseId(int databaseId);
        List<int> GetDatabaseIdsByApplicationId(int applicationId);

        #endregion
    }
}